---
title: Déployer votre site Astro sur Google Cloud
description: Comment déployer votre site Astro sur le web en utilisant Google Cloud.
sidebar:
  label: Google Cloud
type: deploy
logo: google-cloud
supports: ['ssr', 'static']
i18nReady: true
---
import { Steps } from '@astrojs/starlight/components';

[Google Cloud](https://cloud.google.com/) est une plateforme d'hébergement d'applications web complète qui peut être utilisée pour déployer un site Astro.

## Comment déployer

### Cloud Storage (statique uniquement)

<Steps>
1. [Créez un nouveau projet GCP](https://console.cloud.google.com/projectcreate), ou sélectionnez un projet existant.

2. Créez un nouveau bucket sous [Cloud Storage](https://cloud.google.com/storage).

3. Donnez-lui un nom et les autres paramètres requis.

4. Téléchargez le dossier `dist` dedans ou téléchargez en utilisant [Cloud Build](https://cloud.google.com/build).

5. Activez l'accès public en ajoutant une nouvelle permission à `allUsers` appelée `Storage Object Viewer`.

6. Éditez la configuration du site web et ajoutez `index.html` comme point d'entrée et `404.html` comme page d'erreur.
</Steps>

### Cloud Run (SSR et statique)

Cloud Run est une plateforme sans serveur qui vous permet d'exécuter un conteneur sans avoir à gérer une quelconque infrastructure. Elle peut être utilisée pour déployer des sites statiques et des SSR.

#### Préparer le service

<Steps>
1. [Créez un nouveau projet GCP](https://console.cloud.google.com/projectcreate), ou sélectionnez un projet existant.

2. Assurez-vous que l'[API Cloud Run](https://console.cloud.google.com/apis/library/run.googleapis.com) est activée.

3. Créez un nouveau service.
</Steps>

#### Créer un fichier Dockerfile et créer le conteneur

Avant de pouvoir déployer votre site Astro sur Cloud Run, vous devez créer un fichier Dockerfile qui sera utilisé pour créer le conteneur. Vous trouverez plus d'informations sur [comment utiliser Docker avec Astro](/fr/recipes/docker/#création-dun-dockerfile) dans notre section des recettes.

Une fois le fichier Docker créé, utilisez le pour créer une image et envoyez-la sur Google Cloud. Il existe plusieurs façons d'y parvenir :

**Créer localement en utilisant Docker** :

Utilisez la commande `docker build` pour créer l'image, `docker tag` pour lui donner une étiquette, puis `docker push` pour l'envoyer vers un registre. Dans le cas de Google Cloud, [`Artifact Registry`](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling) est l'option la plus facile, mais vous pouvez aussi utiliser [Docker Hub](https://hub.docker.com/).

```bash
# créer votre conteneur
docker build .

docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/TARGET-IMAGE:TAG

# Transférer l'image vers un registre
docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
```

Modifiez les valeurs suivantes dans les commandes ci-dessus pour qu'elles correspondent à votre projet :

- `SOURCE_IMAGE` : le nom ou l'ID de l'image locale.
- `HOSTNAME` : l'hôte du registre (`gcr.io`, `eu.gcr.io`, `asia.gcr.io`, `us.gcr.io`, `docker.io`).
- `PROJECT` : l'ID de votre projet Google Cloud.
- `TARGET-IMAGE` : le nom de l'image lorsqu'elle est stockée dans le registre.
- `TAG` est la version associée à l'image.

[Pour plus d'informations, consultez la documentation de Google Cloud](https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling)

**Utiliser un autre outil** :

Vous pouvez utiliser un outil CI/CD qui prend en charge Docker, comme [GitHub Actions](https://github.com/marketplace/actions/push-to-gcr-github-action).

**Créer à l'aide de [Cloud Build](https://cloud.google.com/build)** :

Au lieu de créer le fichier Dockerfile localement, vous pouvez demander à Google Cloud de créer l'image à distance. Voir la [documentation Google Cloud Build ici](https://cloud.google.com/build/docs/build-push-docker-image).

#### Déployer le conteneur

Le déploiement peut être géré manuellement dans votre terminal [en utilisant `gcloud`](https://cloud.google.com/run/docs/deploying#service) ou automatiquement en utilisant [Cloud Build](https://cloud.google.com/build) ou tout autre système CI/CD.

:::note[Besoin d'un accès public ?]
N'oubliez pas d'ajouter la permission `Cloud Run Invoker` au groupe `allUsers` dans les paramètres de permissions de Cloud Run !
:::
